package com.xinzhi.service.impl;


import com.xinzhi.config.MD5Utils;
import com.xinzhi.mapper.ChangeMapper;
import com.xinzhi.service.PasswordService;
import com.xinzhi.utils.RedisUtils;
import com.xinzhi.utils.Result;
import com.xinzhi.utils.TengXunSMSUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


@Service
@Transactional
public class PasswordServiceImpl implements PasswordService {

    @Autowired
    private ChangeMapper userMapper; // 假设已经定义了UserMapper接口

    @Autowired
    private RedisUtils redisUtils;
    @Autowired
    private TengXunSMSUtils tengXunSMSUtils;

    @Override
    public boolean isValidPassword(String password) {
        // 密码要求：8-20位字符，至少包含一个字母和一个数字，区分大小写，不包括空格或汉字
        return password.matches("^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,20}$");
    }

    @Override
    public boolean resetPassword( String password, String confirmPassword) {


        // 验证密码格式
        if (!isValidPassword(password)) {
            throw new IllegalArgumentException("密码不符合要求。");
        }

        // 检查密码是否匹配
        if (!password.equals(confirmPassword)) {
            throw new IllegalArgumentException("两次输入的密码不一致。");
        }

        // 对密码进行MD5加密
        String encryptedPassword = encryptPassword(password);

        // 更新密码
        userMapper.updatePassword(encryptedPassword);

        return true; // 如果重置密码成功则返回true
    }







    private void registerUser(String phone, String password) {
        // 对密码进行MD5加密
        String encryptedPassword = encryptPassword(password);

        // 插入新用户信息到数据库
        userMapper.insertUser(encryptedPassword);

        System.out.println("用户 " + phone + " 自助注册成功，密码为：" + password);
    }

    private String encryptPassword(String password) {

        return MD5Utils.MD5Upper(password);
    }
}
